package com.huluobo.a2203kotlinshopping.viewBindingDemo

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.view.View.OnClickListener
import android.widget.EditText
import com.huluobo.a2203kotlinshopping.R
import com.huluobo.a2203kotlinshopping.databinding.ActivityViewDataBindingDemoBinding

/**
 * ViewBinding 总结:
 * 1.首先需要在build.gradle中打开开关 enable=true
 * 2.开启之后所有的xml文件都会对应生成一个类,也就是由xml文件名生成的对应驼峰命名法的实现类,这个类就代表这个xml文件
 * 3.重点*********activity的setContentView或者Fragment的onCreateView中的返回不能直接引用id,需要使用binding的root才能找到xml文件
 * 4.viewBinding的特点,具有空安全,视图(控件)绑定会对view直接引用
 * 5.具有类型安全,不需要类型转换,可以自动匹配xml中控件的类型
 */
class ViewDataBindingDemoActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
//        setContentView(R.layout.activity_view_data_binding_demo)
//        val username = findViewById<EditText>(R.id.dataBinding_username)

        //只使用viewBinding的写法,这样获取一个xml的页面
        val activityViewDataBindingDemoBinding: ActivityViewDataBindingDemoBinding =
            ActivityViewDataBindingDemoBinding.inflate(layoutInflater)
        setContentView(activityViewDataBindingDemoBinding.root)

        //没有使用lambda表达式的写法
//        activityViewDataBindingDemoBinding.dataBindingBtn.setOnClickListener(object : OnClickListener {
//            override fun onClick(view: View?) {
//
//            }
//        })
        activityViewDataBindingDemoBinding.dataBindingBtn.setOnClickListener {
            it.id
        }
    }
}